It has become common for individuals and organizations to use computers and networks of computers to perform and assist in a wide variety of activities. Rather than owning and maintaining physical computers and associated facilities, it is becoming more and more common to provision virtual computer systems and other virtual computing resources with a specialized provider of such virtual resources. Such virtual resource provisioning can provide a number of advantages such as reduced cost of desired services and/or rapid response to changing service needs. However, conventional virtual resource provisioning has a number of shortcomings.
Virtual resource providers may operate large “fleets” of computer hardware and other resources used to implement the virtual resources provisioned to customers. It is not uncommon for there to be a deliberate layer of abstraction between the virtual computing resources and the underlying implementation resources that decouples the two from a user's point of view. Such decoupling can enable a virtual resource provider to engage in sophisticated allocation and re-allocation of the underlying implementation resources for purposes including efficient implementation resource utilization, load balancing and fault tolerance, without requiring the user to be concerned with implementation details. However, at times, users can become concerned about particular implementation details, for example, due to security concerns and regulatory requirements. Some conventional virtual resource providers attempts to address such concerns can have significant negative impacts on implementation resource allocation efficiency and/or effectiveness including increased computational and/or financial cost, and reduced fault tolerance.
Same numbers are used throughout the disclosure and figures to reference like components and features, but such repetition of number is for purposes of simplicity of explanation and understanding, and should not be viewed as a limitation on the various embodiments.